package org.jeecg.modules.engineering.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.engineering.entity.EquipInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.engineering.vo.CollectDataApiParam;
import org.jeecg.modules.engineering.vo.EquipEventInfoProcess;
import org.jeecg.modules.engineering.vo.EquipStatusReport;

import java.util.Date;
import java.util.List;

/**
 * @Description: 设备基础信息表
 * @Author: jeecg-boot
 * @Date:   2019-08-15
 * @Version: V1.0
 */
public interface IEquipInfoService extends IService<EquipInfo> {

    List<EquipStatusReport> findStatusByProjectAndSort(String projectId, String sortId);

    void saveEquip(EquipInfo equipInfo);

    boolean updateEquip(EquipInfo equipInfo);

    void removeWithRedis(String id);

    List<EquipInfo> getEquipInfoByCollectorId(String id);

    List<EquipStatusReport> findStatusByProjectAndSystem(String projectId, String topSystem);

    List<EquipEventInfoProcess> findProcessByProjectAndDate(String projectId, String topSystem, Date time);

    void setToRedis(EquipInfo entity);

    void removeFromRedis(String id);

    void removeFromRedis(EquipInfo entity);

    EquipInfo getFromRedisByOtherKey(String key);

    EquipInfo getFromRedisById(String id);


    List<CollectDataApiParam> getcollectParam(String id);

    Result<String> refreshToRedis();

    List<EquipInfo> findByProjectAndSystem(String departId, String projectId, String topSystem);

    boolean checkHaveBySortIds(List<String> ids);

    void batchRemoveWithRedis(List<String> asList);

    IPage<EquipInfo> selectSqlList(Page<EquipInfo> page, EquipInfo equipInfo, List<String> projectIds);

    List<EquipInfo> selectSqlList(EquipInfo equipInfo, List<String> projectIds);
}
